package QianFeng06.SystemRuntimeDemo;

import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

/**
 * System类
 *      System类代表系统，系统级的很多属性和控制方法都放置在该类的内部。该类位于Java.lang包。
 * Runtime类
 *      每个 Java 应用程序都有一个 Runtime 类实例，使应用程序能够与其运行的环境相连接。
 *      可以通过 getRuntime 方法获取当前运行时。
 **/
public class SystemRuntimeDemo {
    public static void main(String[] args) {
        System.out.println("向控制台输出");
        System.err.println("出错了");//红色标出输出，一般用于错误报告

        int[] num1 = {1, 2, 3, 4, 5, 6};
        int[] num2 = new int[num1.length];
        //arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
        //参数（源数组，源数组的起始位置，目标数组，目标数组的起始位置，长度）
        //从指定源数组中复制一个数组，复制从指定的位置开始，到目标数组的指定位置结束。
        System.out.println("---------------arraycopy--------------");
        System.arraycopy(num1, 0, num2, 0, num1.length);
        System.out.println("num2=" + Arrays.toString(num2));

        //currentTimeMillis() 返回以毫秒为单位的当前时间
        System.out.println("---------------currentTimeMillis--------------");
        System.out.println(System.currentTimeMillis());
        Date nowTime = new Date(System.currentTimeMillis());
        DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
        String now = dateFormat.format(nowTime);
        System.out.println(now);

        //getProperty(String key) 获取指定键指示的系统属性。
        System.out.println("---------------getProperty--------------");
        System.out.println(System.getProperty("java.version"));
        System.out.println(System.getProperty("java.home"));//java安装目录
        System.out.println(System.getProperty("os.name"));//操作系统的名称

        //exit(int status) 终止当前正在运行的 Java 虚拟机。
        //System.exit(0);//参数用作状态码 非 0 的状态码表示异常终止。

        System.out.println("---------------Runtime--------------");
        Runtime rt = Runtime.getRuntime();
        System.out.println("处理器数量:" + rt.availableProcessors()+ "个");
        System.out.println("JVM总内存数:" + rt.totalMemory()+ " byte");
        System.out.println("]VM空闲内存数:" + rt.freeMemory()+ " byte" );
        System.out.println("JVM可用最大内存数:" + rt.maxMemory()+ " byte");

        //在单独的进程中执行指定的字符串命令
        try {
            rt.exec("notepad");//打开记事本
        } catch (IOException e) {
            e.printStackTrace();
        }

        //加载C、C++编写的类库
        //System.loadLibrary(libName)

    }
}
